/*
 * 描述： <描述>
 * 修改人： rain
 * 修改时间： 2016年9月28日
 * 项目： rainhy-auth
 */
package com.rainhy.auth.context;

import java.util.Collection;

import org.springframework.core.Ordered;

/**
 * 权限检查器
 * 
 * @author rain
 * @version [版本号, 2016年9月28日]
 * @see [相关类/方法]
 * @since [产品/模块版本]
 */
public interface AuthChecker extends Ordered {
    /**
     * 权限核查器，支持类型<br>
     * 如果返回 null, 则支持所有的类型检查<br>
     * 1、权限容器会根据该权限类型，寻址权限鉴权器<br>
     * 2、支持authChecker自动扫描注入，实现了该接口并含有注解的类将被注入<br>
     * 3、注入先后顺序：后进入的如果authType相同将会覆盖系统默认的<br>
     * 
     * @return String 权限检查器类型
     * @exception throws [异常类型] [异常说明]
     * @see [类、类#方法、类#成员]
     */
    public String authType();
    
    /**
     * 检查权限<br>
     * 在该功能中，能够通过权限容器获取到会话权限容器<br>
     * 从而获取到request，session等信息进行检查<br>
     *
     * @param authItemRefs
     * @param objects 额外参数
     * 
     * @return boolean 鉴权是否成功
     * @exception throws [异常类型] [异常说明]
     * @see [类、类#方法、类#成员]
     */
    public boolean hasAuth(Collection<AuthItemRef> authItemRefs, Object... objects);
}
